Software application servers, examples of which include Oracle WebLogic Server (WLS) and Glassfish, generally provide a managed environment for running enterprise software applications. Further, technologies have also recently been developed for use in cloud environments, which allow users or tenants to develop and run their applications within a partitionable environment, including a multi-tenant cloud environment, and to take advantage of distributed resources provided by such an environment.
The Java Message Service (JMS) application programming interface (API) is an API usable in application server environments for sending information between two or more clients. JMS is a messaging standard that allows application components to create, send, receive, and read messages, allowing communication between different components of a distributed application to be loosely coupled, reliable, and asynchronous.
In a cluster, JMS components typically reside on different servers within that cluster, and can be migrated between servers when necessary. However, reconfiguring JMS functionality, including automatically migrating JMS components between servers upon failure or shutdown of a server, for example, requires high administrative overhead. An administrator must configure, for each component, where that component should be moved in the event that a server on which the component resides is no longer available. Further, JMS components are migrated as configured, and without considering server load and cluster performance. In application server environments, including multi-tenant cloud environments, server and cluster performance can vary as the environments scale and resources are added and clusters grow and shrink.